home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #9 / Amiga Plus CD - 2004 - No. 09.iso / amigaplus / tools / dev_libs / feelin040718 / include / a4.e next >
Text File  |  2004-08-03  |  2KB  |  72 lines

  1. OPT MODULE
  2. OPT NOWARN
  3.  
  4. EXPORT PROC sys_SGlob()
  5.    LEA      __Global(PC),A0
  6.    MOVE.L   A4,(A0)
  7. ENDPROC
  8. EXPORT PROC sys_RGlob()
  9.    LEA      __Global(PC),A0
  10.    MOVEA.L  (A0),A4
  11. ENDPROC
  12. EXPORT PROC sys_global()
  13.    LEA      __Global(PC),A0
  14.    MOVE.L   (A0),D0
  15. ENDPROC D0
  16. /*
  17. PROC sys_GetGlob()
  18.    LEA      __Glob(PC),A0
  19.    MOVE.L   (A0),D0
  20. ENDPROC D0
  21. PROC sys_SetGlob(x)
  22.    MOVE.L   x,D0
  23.    LEA      __Glob(PC),A0
  24.    MOVE.L   D0,(A0)
  25. ENDPROC
  26. PROC sys_CreateGlobal()
  27.    MOVE.L   #512,D0
  28.    MOVE.L   #$10000,D1
  29.    MOVEA.L  4,A6              -> execbase
  30.  
  31.    JSR      -$2AC(A6)         -> AllocVec(size,attr)(d0,d1)
  32.    TST.L    D0
  33.    BEQ      __Failed
  34.    MOVE.L   D0,-(A7)          -> <S> new_glob start
  35.  
  36.    MOVEA.L  A4,A0
  37.    SUBA.L   #512,A0         -> A0 := old_glob start
  38.    MOVEA.L  D0,A1             -> A1 := new_glob start
  39.    MOVE.L   #512,D0
  40.  
  41.    JSR      -$270(A6)         -> CopyMem(source,dest,size)(a0,a1,d0)
  42.  
  43.    LEA      __OldGlob(PC),A0
  44.    MOVE.L   A4,(A0)
  45.    MOVE.L   (A7)+,A4          -> <R> new_glob start
  46.    ADDA.L   #512,A4         -> A4 := new_glob end
  47.    MOVE.L   A4,D0
  48.    LEA      __Glob(PC),A0
  49.    MOVE.L   D0,(A0)           ; __Failed:
  50. ENDPROC D0
  51. PROC sys_RestoreGlobal()
  52.    LEA      __OldGlob(PC),A0
  53.    MOVEA.L  (A0),A1           -> A1 := old_glob
  54.    MOVEA.L  A4,A0             -> A0 := new_glob
  55.    MOVE.L   #512,D0           -> D0 := glob size
  56.    SUBA.L   D0,A0             -> A0 := new_glob start
  57.    MOVE.L   A1,-(A7)          -> <S> old_glob end
  58.    MOVE.L   A0,-(A7)          -> <S> new_glob start
  59.    SUBA.L   D0,A1             -> A1 := old_glob start
  60.  
  61.    MOVEA.L  4,A6              -> exec.library
  62.  
  63.    JSR      -$270(A6)         -> CopyMem(source,dest,size)(a0,a1,d0)
  64.    MOVE.L   (A7)+,A1          -> <R> new_glob start
  65.    JSR      -$2B2(A6)         -> FreeVec(memblock)(a1)
  66.  
  67.    MOVE.L   (A7)+,A4          -> <R> old_glob end
  68. ENDPROC
  69. __OldGlob: LONG  NIL
  70. */
  71. __Global:   LONG  NIL
  72.